﻿/*************************************************************************************

- CLR版本：        4.0.30319.42000
- 类 名 称：       MesHelperSharp
- 机器名称：       YTE
- 命名空间：       LD.Tool.MES.sharp
- 文 件 名：       MesHelperSharp
- 创建时间：       2022/7/31 19:45:25
- 作    者：       YTE
- 说   明：
- 修改时间：
- 修 改 人：
  *************************************************************************************/

using HalconDotNet;
using LD.Host;
using LD.Model;
using System;

namespace LD.Tool
{
    [Tool(Text = "Kazam启动", FrmParam = "ToolKazamStartFrm", ToolType = ToolEnum.项目)]

    public class ToolKazamStart : BaseTool
    {
        public override OpResult Execute(TB_Tool model)
        {
            try
            {
                stopwatch.Start();
                if (model.Param != null)
                {
                    var param = Newtonsoft.Json.JsonConvert.DeserializeObject<ToolKazamParame>(model.Param);
                    if (param != null)
                    {
                        string barcode = Cache.GetVar<string>(param.Cmd);

                        if (!string.IsNullOrEmpty(barcode))
                        {
                            string cmd = $"CMD=StartOne|Slot={param.Slot}|SN={barcode}";
                            if (param.SplitChart)
                                cmd = cmd + "\r\n";
                            isSuccess = KazamService.Ins.ClientSendMulti(param.TcpIpName, $"Slot{param.Slot}", cmd);

                            PubSub.Hub.Default.PublishAsync(new KazamHandle()
                            {
                                kazamState = isSuccess ? Host.项目.KazamState.Start : Host.项目.KazamState.Error,
                                message = isSuccess ? "" : "Kazam发送CMD=StartOne后报警",
                                Slot = $"Slot{param.Slot}"
                            });
                        }
                        else 
                            isSuccess = false;
                    }
                    if (!isSuccess)
                        EchoPLC(model.EchoPLC);
                }
            }
            catch (Exception ex)
            {
                Log(model, ex.Message, LogLevel.严重);
            }
            finally
            {
                stopwatch.Stop();
            }
            return new OpResult() { IsSuccess = isSuccess, Message = message, ExecuteTime = stopwatch.ElapsedMilliseconds };
        }
    }
}
